![]() |
![]() |
|
rtk 20112011.1.1Vsote 1. podnalogaDano je zaporedje NalogaNapiši funkcijo Vhodni podatkiDan je seznam Izhodni podatkiPar PrimerNaj bo
Najkrajše strnjeno podzaporedje z vsoto, večjo od
Uradna rešitevdef poisci_podzaporedje(seznam,m): """Poišče in vrne v tem zaporedju prvo najkrajše tako strnjeno podzaporedje, pri katerem je vsota števil v podzaporedju večja od m.""" zacetni_indeks = -1 dolzina_seznama = len(seznam) dolzina_zaporedja = dolzina_seznama + 1 for i in range(dolzina_seznama): vsota = 0 for j in range(i, dolzina_seznama): vsota += seznam[j] if (vsota > m) and (j - i < dolzina_zaporedja): zacetni_indeks = i dolzina_zaporedja = j - i break if dolzina_zaporedja > dolzina_seznama: return 'ni primernega podzaporedja' return (zacetni_indeks + 1, dolzina_zaporedja + 1) 2011.1.3Majevske številke 1. podnalogaMaji so ljudstvo, živeče v južni Mehiki in severni Srednji Ameriki s tritisočletno zgodovino. Majevska pisava je bila v rabi vse do prihoda Evropejcev in je dolgo predstavljala veliko zagonetko. Manj zagoneten pa je njihov sistem zapisa števil. Poznali so ničlo in podobno kot
mi (za razliko od rimskih številk) uporabljali mestni zapis števil, vendar s številsko
osnovo Posamezne števke torej predstavljajo števila med
(ali še z nekaj drugimi kombinacijami znakov Števke v mestnem zapisu številke ločimo med seboj s presledkom. Osnova je NalogaNapiši funkcijo Vhodni podatkiNiz z majevsko številko. Za vsako števko je presledek. Izhodni podatkiNaravno število, pretvorjeno iz majevskega. PrimerNekaj primerov večjih števil:
Uradna rešitevdef pretvori_majevsko(majevsko_stevilo): '''Prebere niz, v katerem je zapisana majevska številka, jo pretvori v naravno število in vrne''' n = 0 stevka = 0 for znak in majevsko_stevilo: if znak == '0': stevka += 0 elif znak == '.': stevka += 1 elif znak == ':': stevka += 2 elif znak == '|': stevka += 5 else: n = 20 * n + stevka stevka = 0 return n 2011.2.1Vejice 1. podnalogaTomija je učiteljica v šoli čisto zastrašila z vejicami: ker so mu v spisih kar naprej manjkale, jih zdaj za vsak slučaj raje napiše malo več. Da jih ja ne bi bilo premalo, postavi kakšno celo sredi besede. Primer njegovega spisa:
Ko napiše tak spis v Mikromehki Besedi ali drugem urejevalniku besedil, je zoprno,
da ne more enostavno zamenjati vseh pojavitev nekega niza
Njegov urejevalnik besedila pa tega ne zna, saj zgago delajo vejice, razmetane znotraj
NalogaNapiši funkcijo Uradna rešitevdef zamenjaj(tekst, niz_1, niz_2): pomozni_niz_1 = '' indeksiVejic = [i for i, znak in enumerate(tekst) if znak == ','] for znak in tekst: if znak != ',': pomozni_niz_1 += znak pomozni_niz_2 = '' i = 0 while i < len(pomozni_niz_1): if pomozni_niz_1[i] == niz_1[0] and pomozni_niz_1[i+1] == niz_1[1]: pomozni_niz_2 += niz_2 i += len(niz_2) else: pomozni_niz_2 += pomozni_niz_1[i] i += 1 koncni_tekst = '' i = 0 while i < len(pomozni_niz_2): if i in indeksiVejic: koncni_tekst += ',' indeksiVejic.pop(0); pomozni_niz_2 = ' ' + pomozni_niz_2 else: koncni_tekst += pomozni_niz_2[i] i += 1 return koncni_tekst 2011.2.2(Opomba) 1. podnalogaPri pisanju besedila uporabimo oklepaje, če želimo zapisati kakšno opombo (ali kaj drugega manj pomembnega). Včasih tudi znotraj opombe povemo kaj še manj pomembnega (torej manj pomembnega od opombe (ki že sama ni pomembna), a še vedno zanimivega); v takem primeru lahko uporabimo gnezdene oklepaje. Gnezdenje oklepajev lahko načeloma neomejeno stopnjujemo — možno je imeti oklepaje v oklepajih v oklepajih v oklepajih . . . v oklepajih. Če se nam pri branju takšnega teksta mudi, lahko preskočimo vse dele besedila, ki so gnezdeni vsaj k korakov globoko, pri čemer je vrednost k odvisna od tega, kako hudo se nam mudi. NalogaNapiši funkcijo PrimerČe dobimo naprimer niz
in
KomentarNaloga je iz 2. tekmovalne skupine, vendar lažja različica. Uradna rešitevdef samo_pomembno(sez, k): '''Prebere niz in ga prepiše v novega, pri čemer spusti vse, kar je z oklepaji vgnezdeno globje got k''' globina = 0 rez = '' for znak in sez: if znak == '(': globina+=1 if globina <= k: rez += znak if znak == ')': globina-=1 return rezMesto objave ob koncu projekta 15.9.2018 |